#include "OAAdmin.h"
#include "OAUser.h"
#include "OAMeetingRoom.h"
#include <iostream>
#include <string>
#include <tuple>
#include <vector>

using namespace std;

class OADataCebter {
private:
  vector<OAAdmin> _admins;
  vector<OAUser> _users;
  vector<OAMeetingRoom> _meetingRooms;

  OADataCebter();
  static OADataCebter _instance;

public:
  static OADataCebter &getInstance();
  OAAdmin &loginAdmin(string username, string password);
  OAUser &loginUser(string username, string password);

  bool addUser(string username, string password, string department);
  bool delUser(string username);

  bool addMeetingRoom(int mid, int capacity, string roomname);
  bool delMeetingRoom(int mid);
  void clearMeetingRoomType();

  bool reserveMeetingRoom(int mid, string username);
  bool cancelReserveMeetingRoom(int mid , string username);
  void printMeetingRoomByUser(string username);

  void printUser();
  void printMeetingRoom();
};